/**
 * 实现冒泡排序算法
 * @param {Array} arr - 需要排序的数组
 * @returns {Array} - 排序后的数组
 */
function bubbleSort(arr) {
    const len = arr.length;
    for (let i = 0; i < len - 1; i++) {
        for (let j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                // 使用解构赋值交换元素位置
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
            }
        }
    }
    return arr;
}

// 示例用法
const exampleArray = [5, 3, 8, 4, 2, 1];   
// 优化：如果在一轮遍历中没有交换元素，说明数组已经有序，直接返回
for (let i = 0; i < len - 1; i++) {
    let swapped = false;
    for (let j = 0; j < len - 1 - i; j++) {
        if (arr[j] > arr[j + 1]) {
            [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
            swapped = true;
        }
    }
    if (!swapped) {
        break;
    }
}



console.log('排序前:', exampleArray);
console.log('排序后:', bubbleSort(exampleArray));
